// 1.匹配 yyyy-mm-dd 模式

let reg = /^\d{4}-(0[0-9]|1[0-2])-(0[1-9]|[12][0-9]|3[0-1])$/

/*  
  2. 匹配 id 
  从 <div id="container" class="main"></div> 中匹配出 id="container"
 
*/

// 如果不考虑标签
reg = /id=".*?"/g
console.log('<div id="container" class="main"></div>'.match(reg))

// 涉及到回溯 需要优化
reg = /id="[^"]*"/g
console.log('<div id="container" class="main"></div>'.match(reg))

// 如果考虑标签 todo 还需要做一些处理
reg = /<.*(id="[^"]*").*?>/
console.log('<div id="container" class="main"></div>'.match(reg))

/* 
 3. 数字千分位分割符

*/

reg = /(?!^)(?=(\d{3})+$)/g

console.log('123456789'.replace(reg, ','))

/* 
  4. 验证密码问题

  密码长度6-12位，由数字、小写字符和大写字母组成，但必须至少包括2种字符。


*/

reg = /((?=.*\d)(?=.*[a-z])|(?=.*[A-Z])(?=.*[a-z])|(?=.*[A-Z])(?=.*\d))^[0-9A-z]{6,12}$/
console.log(reg.test('1234567')) // false 全是数字
console.log(reg.test('abcdef')) // false 全是小写字母
console.log(reg.test('ABCDEFGH')) // false 全是大写字母
console.log(reg.test('ab23C')) // false 不足6位
console.log(reg.test('ABCDEF234')) // true 大写字母和数字
console.log(reg.test('abcdEF234')) // true 三者都有

// var regex = /\1\2\3\4\5\6\7\8\9/
// console.log(regex.test('\1\2\3\4\5\6\789'))
// console.log('\1\2\3\4\5\6\789'.split(''))

/* 
  5. 驼峰化
  -moz-transform 或 moz-transform 转成 mozTransform
*/

reg = /(?:(?:^-?)|\-)([A-z])/g

console.log(
  'Moz-transform  '.trim().replace(reg, (match, p1, offset) => {
    console.log(p1)

    if (offset == 0) {
      return p1 ? p1.toLowerCase() : ''
    }
    return p1 ? p1.toUpperCase() : ''
  })
)
